#ifndef __YLW_CACHE_H__
#define __YLW_CACHE_H__

#include <string>
#include <unordered_map>
#include <list>

using std::string;
using std::unordered_map;
using std::list;
using std::pair;

namespace ylw
{

using iter = list<pair<string, string> >::iterator;

class Cache{
friend class CacheManager;
public:
    Cache(int num);
    Cache(const Cache & cache);
    void addElement(const string &key, const string &value);//往缓存中添加信息
    void readFromFile(const string &filename);//从文件中读取缓存信息
    void writeToFile(const string &filename);//将缓存信息写入文件中
    void update(const Cache &rhs);//更新缓存信息
    string query(string &key);

private:
    unordered_map<string, string> _hashMap;//缓存内容
    unordered_map<string, iter> _data;// 快速访问list中的元素
    list<pair<string, string> > _updateData;// 把所有从词典来的查询结果存储到更新内容里
    int _name;
};

}//enf of  namespace ylw

#endif
